fix handling remote data in get_data
authorFelix Fietkau <[email protected]>
Sat, 21 Jun 2025 07:53:18 +0000 (09:53 +0200)
committerFelix Fietkau <[email protected]>
Sat, 21 Jun 2025 07:53:21 +0000 (09:53 +0200)
Also make it possible to query only local data.

Signed-off-by: Felix Fietkau <[email protected]>
ufpd

diff --git a/ufpd b/ufpd
index 6d5a55f68f0271a9256cd63979c7a82efaa939f2..0b3e283860196553f233107b51311b45ab5ea3a1 100755 (executable)
--- a/ufpd
+++ b/ufpd
@@ -66,7 +66,10 @@ function dev_timestamp_cmp(a, b)
        return a[1].timestamp - b[1].timestamp;
 }
 
-function network_devices() {
+function network_devices(local) {
+       if (local)
+               return devices;
+
        let device_lists = [
                devices
        ];
@@ -319,6 +322,7 @@ global.ubus_object = {
        get_data: {
                args: {
                        macaddr: "",
+                       local: false
                },
                call: function(req) {
                        let mac = req.args.macaddr;
@@ -328,7 +332,8 @@ global.ubus_object = {
                        if (!mac)
                                return devices;
 
-                       let dev = devices[mac];
+                       let cur_devices = network_devices(req.args.local);
+                       let dev = cur_devices[mac];
                        if (!dev)
                                return libubus.STATUS_NOT_FOUND;
 
@@ -339,7 +344,8 @@ global.ubus_object = {
        add_data: {
                args: {
                        macaddr: "",
-                       data: []
+                       data: [],
+                       local: false
                },
                call: function(req) {
                        let mac = req.args.macaddr;
@@ -357,12 +363,13 @@ global.ubus_object = {
        fingerprint: {
                args: {
                        macaddr: "",
-                       weight: false
+                       weight: false,
+                       local: false
                },
                call: function(req) {
                        refresh_plugins();
 
-                       let cur_devices = network_devices();
+                       let cur_devices = network_devices(req.args.local);
                        let mac_list = req.args.macaddr ? [ req.args.macaddr ] : keys(cur_devices);
                        let ret = {};
 
@@ -396,12 +403,13 @@ global.ubus_object = {
 
        list: {
                args: {
-                       macaddr: ""
+                       macaddr: "",
+                       local: false
                },
                call: function(req) {
                        refresh_plugins();
 
-                       let cur_devices = network_devices();
+                       let cur_devices = network_devices(req.args.local);
                        let mac_list = req.args.macaddr ? [ req.args.macaddr ] : keys(cur_devices);
                        let ret = {};